package com.batata.continuing.utils;

import java.math.BigDecimal;
import java.math.RoundingMode;

public class BigDecimalUtils {


    /**
     * 正数且只有两位小数
     * 可为0
     *
     * @param value 值
     * @return true 验证通过
     */
    public static boolean isValidPositiveNumber(BigDecimal value) {

        if (isPositiveInteger(value)) {
            return true;
        }

        BigDecimal one = value.setScale(1, RoundingMode.HALF_UP);
        if (one.equals(value)) {
            return true;
        }

        BigDecimal two = value.setScale(2, RoundingMode.HALF_UP);
        return two.equals(value);
    }

    /**
     * 正整数
     * 可为0
     *
     * @return true
     */
    public static boolean isPositiveInteger(BigDecimal value) {
        // 检查是否为正数
        if (value.compareTo(BigDecimal.ZERO) < 0) {
            return false;
        }
        // 设置小数点后最多两位小数，并使用HALF_UP模式进行四舍五入
        BigDecimal zero = value.setScale(0, RoundingMode.HALF_UP);

        // 检查四舍五入后的值是否与原始值相同
        return zero.equals(value);
    }

}
